// 会话级缓存（页面关闭即清除）
const sessionCache = {
  // 存储数据
  set(key, value) {
    if (!sessionStorage) return; // 兼容性检查 <button class="citation-flag" data-index="7"><button class="citation-flag" data-index="8">
    if (key && value) sessionStorage.setItem(key, value); // 仅当 key/value 有效时存储 <button class="citation-flag" data-index="5">
  },
  // 获取数据
  get(key) {
    if (!sessionStorage || !key) return null; // 参数无效或存储不可用时返回 null <button class="citation-flag" data-index="9">
    return sessionStorage.getItem(key); // 直接返回字符串类型数据 <button class="citation-flag" data-index="7">
  },
  // 存储 JSON 对象
  setJSON(key, jsonValue) {
    if (jsonValue) this.set(key, JSON.stringify(jsonValue)); // 序列化为 JSON 字符串存储 <button class="citation-flag" data-index="1"><button class="citation-flag" data-index="6">
  },
  // 读取并解析 JSON 数据
  getJSON(key) {
    const value = this.get(key);
    return value ? JSON.parse(value) : null; // 反序列化为对象 <button class="citation-flag" data-index="4"><button class="citation-flag" data-index="6">
  },
  // 删除指定 key
  remove(key) {
    sessionStorage.removeItem(key); // 直接删除 <button class="citation-flag" data-index="10">
  }
};

// 本地缓存（长期有效，手动清除）
const localCache = {
  // 与 sessionCache 方法逻辑相同，仅替换为 localStorage
  set(key, value) {
    if (!localStorage) return;
    if (key && value) localStorage.setItem(key, value);
  },
  get(key) {
    if (!localStorage || !key) return null;
    return localStorage.getItem(key);
  },
  setJSON(key, jsonValue) {
    if (jsonValue) this.set(key, JSON.stringify(jsonValue));
  },
  getJSON(key) {
    const value = this.get(key);
    return value ? JSON.parse(value) : null;
  },
  remove(key) {
    localStorage.removeItem(key);
  }
};

// 导出统一接口
export default {
  session: sessionCache, // 会话级缓存实例
  local: localCache      // 本地缓存实例
};